Software licensing has been used for some time in the software industry as a way of controlling use of software, and more particularly, for the purpose of limiting or eliminating unauthorized use of software. The unauthorized or unlicensed use of software is known as software piracy.
The resulting economic dislocation that occurs due to software piracy is severe. As the costs of developing and supporting software programs increase, the need to reduce piracy grows. One of the key elements of reducing software piracy is the use of so called authentication keys, which may be used by an authorized user or entity to enable a software program to operate. An authentication key includes software enabling information in a form that is understood by the software program, and ensures that a user or entity understands and agrees to the license terms of the software program.
License terms are the terms that apply to the use of the particular copy of the software program, and can include a start date, an end date, a number of program launches, fingerprint information to limit use on a specific local area network or a specific machine, and other controlling information. Once the authentication key is correctly entered in the software program, these types of license terms often become binding and thereby dictate the use of the software program.
The runtime environment of most software programs, including many major operating systems, makes it difficult to effectively protect a software program from unauthorized use or reproduction. Software developers have attempted to increase the difficulty of bypassing electronic licenses that dictate the functionality of software programs. However, this approach tends to inconvenience a user of software programs, and/or the developer of software programs.
Currently, authenticating software programs generally requires a “challenge/response” mechanism. The challenge/response mechanism requires a user or entity to input a series of alphanumeric characters, also known as an authentication key that is designed to activate and allow the use of a particular software program. Authentication keys are often included with the packaging associated with a software program. In the case of hardware manufacturers and other large scale entities that install massive numbers of software products on systems that are sold in commerce, the process of “activating” software programs using authentication keys is often a time-consuming process.
Accordingly, there remains a need for a system and method for delivery of authentication keys, or another software enabling device/mechanism, in a secure yet simplified manner. Of particular importance is the need to provide larger entities, such as manufacturers of hardware devices that include preinstalled software programs on these devices, the ability to easily authenticate preinstalled software programs in a time-saving and cost-effective manner.